home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-01-11 | 13.9 KB | 366 lines | [TEXT/CWIE] |
- ========================================================================
- Metrowerks Standard Library Release Notes
- ========================================================================
-
- Version: CWPro2 Update
- Date: December 23, 1997
- Author: Vicki S. Scott, Michael Marcotty, Matt Fassiotto,
- John Maffei, Howard Hinnant, Ron Liechty
-
- ========================================================================
-
- This release of MSL contains some significant bug fixes since the
- release of CWPro2. Most importantly, however, namespace std has been
- enabled.
-
-
- ========================================================================
- New Features in This Version
- ========================================================================
-
- * Namespace std enabled. This is a major code change in the library
- involving renaming all the headers. Please read the notes on using
- namespace std carefully at the end of this document.
-
- * Added numeric capability for the x86 platforms.
-
- * Improved clock on Mac platforms to take advantage of O/S capability.
- Please read the notes on how to implement if you would like this
- additional functionality.
-
- * SIOUX WASTE has been upgraded from 1.3a4 to version 1.3a6.
-
- * C9X functions for x86:
-
- - full implementation of the floating point unit interface as
- specified in fenv.h, and additional functions feset/getprec
-
- - isnormal, fpclassify, signbit macros/functions are now in fpce.obj
-
-
- ========================================================================
- Bugs Fixed in This Version
- ========================================================================
-
- * abort_exit.c
- Fixes a bug in close of console window on the x86 when stdin has
- been closed.
-
- * complex
- Removed extraneous declaration of pow function.
-
- * Numerous C++ headers
- Removed all "#pragma dont_inline" statements for template functions.
- This was a bug introduced in CWP2 where some of the statements had
- been removed, but not all of them, causing inlining to be off in
- C++ functions.
-
- * wchar_t.h
- Fixed a bug with defining compiler versions.
-
- * functional
- Enable mem_fun functions.
-
- * list, deque, tree.h
- Fixed name look up problem with iterator and const_iterator
-
- * vector, queue
- Include deque header.
-
- * scanf.c
- Fixed a bug with the return value.
-
- * cmath
- (MW02783)
- Fixed a bug in classification macros where parenthesis were missing.
-
- * complex.cpp
- (MW02812)
- Fixed a bug passing mixed types. The declaration of polar now meets
- the C++ Standard. The following error message is now fixed:
-
- / Error : ambiguous access to overloaded funciton
- // 'powd<d>(const complex<double> &, double)'
- // ' powd(const complex &, const T &)'
- // ComplexText.cpp line29 powd(Cx.2.0)
-
- * iterator
- Move iterator fix from mcompile.h to iterator header file
-
- * Fixed auto_ptr to use mutable.
-
- * iosfwd
- removed traits typedef because it is non-standard and conflicted with
- other uses of the identifier "traits".
-
- * mmemory.h and bstring
- Fixed destroy method for basic_string_ref
-
- * buffer_io.c, file_pos.c
- Fixed a problem with EOL differences between Mac and Win32.
-
- * file_io.mac.c, path2fss.c
- Allows "." files to be opened on a Mac.
-
- * iostream, mlocale, iostream.cpp, MSLPrefixPartial.h
- Fixes a memory leak.
-
- * Fixed a bug in SIOUX.c to correct the action of the \r character
- for the first line. Previously, random results occurred with
- this character on the first line of output. Now, the action of
- backing up to the beginning of the line and starting at the first
- character behaves as expected.
-
-
- ========================================================================
- Known Bugs and Incompatibilities
- ========================================================================
-
- * Wide character support is still not supported in this library, but
- it will be supported in all library routines in the next release.
- This includes new header files wchar.h and wctype.h.
-
- * MW02614
- MW02687
- On 68K for 8-byte doubles, using function pointers to ANSI math
- functions do not work.
-
- * MW01261
- Precision of printing doubles is incorrect even when values are
- exact (e.g., int). This will be fixed in Pro3.
-
- * string and reverse_iterator are lacking operator !=. There is a
- generic operator != that string and reverse_iterator can use. To
- enable the generic operator !=, issue a
- using namespace std::rel_ops;
- in your code before you use operator!= on strings or
- reverse_iterators.
-
- ========================================================================
- Additional Notes
- ========================================================================
-
- * Improved clock for Mac platforms
- To increase the tick count for the Mac platforms in order to use the
- facilities the Operating System provides, please change the following
- file:
- Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
- timesize.mac.h
- This file introduces a define (__TIMESIZE_DOUBLE) which enables the
- improved clock code in time.h and time.mac.c. Please note that the
- clock_t typedef will change from an unsigned long to a type double.
- This also means that the clock function will change types. Be sure
- you confirm in your code base that your return values are typed
- accordingly for clock and clock_t.
-
- * Using namespace std in MSL
- This release of MSL has namespace std enabled on by default. You
- may disable std if your code is not ported to std yet. However,
- there are many backward compatibility features built into this
- release. Your code will likely compile fine, even if it is namespace
- ignorant.
-
- The details of how to use this backward compatibility are as follows:
-
- How to install:
- ===============
-
- The folder, Metrowerks Standard Library, should be replaced entirely.
- The folders MacOS Support and Win32-x86 Support under CodeWarrior
- (not Metrowerks Standard LIbrary), should have files placed INTO
- them (note the ->INTO notation). IMPORTANT: Install the compiler
- update 2.0.1 before you install this update.
-
- After installing the files, run the "Build MSL Libraries" script to
- rebuild whatever libraries you use. Also use the project
- "MSL C++ Headers.mcp" to rebuild your precompiled headers.
-
- General Directions for doing the namespace thing:
- ===================================================================
-
- Namespace applies only to C++ projects. C projects are unaffected
- by the namespace settings. You can turn namespaces on and off.
- This is a multi-step process:
-
- 1. #define or comment out MSIPL_USING_NAMESPACE in ansi_parms.h.
- This controls the C half of the library.
-
- 2. #define or comment out MSIPL_USING_NAMESPACE in mcompile.h. This
- controls the C++ half of the library.
-
- 3. Recompile the libraries using either the project files in the bin
- directories (for C and for C++), or use the build script (build
- script highly reccommended). You will also need to rebuild your
- precompiled headers.
-
- The namespace update has a great deal of backward compatibility built
- into it. Part of this backward compatibility is dictated by the C++
- standard. Part of it is offered as an extension to the standard by
- Metrowerks. The bottom line is that your namespace-ignorant code is
- likely to compile and run just fine! If not, the fix to make it run
- should be very easy (explained below).
-
- The Nov. '97 standard defines the following headers:
-
- Table 2--C++ Library Headers
-
- +------------------------------------------------------------------+
- |<algorithm> <iomanip> <list> <ostream> <streambuf> |
- |<bitset> <ios> <locale> <queue> <string> |
- |<complex> <iosfwd> <map> <set> <typeinfo> |
- |<deque> <iostream> <memory> <sstream> <utility> |
- |<exception> <istream> <new> <stack> <valarray> |
- |<fstream> <iterator> <numeric> <stdexcept> <vector> |
- |<functional> <limits> |
- +------------------------------------------------------------------+
-
- 3 The facilities of the Standard C Library are provided in 18 additional
- headers, as shown in Table 3:
-
- Table 3--C++ Headers for C Library Facilities
-
- +--------------------------------------------------+
- |<cassert> <ciso646> <csetjmp> <cstdio> <ctime> |
- |<cctype> <climits> <csignal> <cstdlib> <cwchar> |
- |<cerrno> <clocale> <cstdarg> <cstring> <cwctype> |
- |<cfloat> <cmath> <cstddef> |
- +--------------------------------------------------+
-
- All of these headers bury the C++ and C libraries under namespace std.
- This means that printf is now named std::printf, and cout is now named
- std::cout.
-
- Don't panic, help is on the way! The standard defines the following
- headers for backward compatibility:
-
- Table 1--C Headers
-
- +----------------------------------------------------------------+
- | <assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h> |
- | <ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h> |
- | <errno.h> <locale.h> <stdarg.h> <string.h> |
- | <float.h> <math.h> <stddef.h> <time.h> |
- +----------------------------------------------------------------+
-
- If you use these headers instead of the <cstdio> type guys, then the
- symbol std::printf will appear to be named printf in your program
- (even with namespaces turned on!).
-
- Additionally, Metrowerks defines the following headers:
-
- +--------------------------------------------------------------------+
- |<algorithm.h> <iomanip.h> <list.h> <ostream.h> <streambuf.h> |
- |<bitset.h> <ios.h> <queue.h> |
- |<complex.h> <iosfwd.h> <map.h> <set.h> <typeinfo.h> |
- |<deque.h> <iostream.h> <sstream.h> <utility.h> |
- |<exception.h> <istream.h> <new.h> <stack.h> <valarray.h> |
- |<fstream.h> <iterator.h> <numeric.h> <stdexcept.h> <vector.h> |
- |<functional.h> |
- +--------------------------------------------------------------------+
-
- These headers are analogous to the <stdio.h> headers. If you use these
- then the std::library will appear to your code to be in the global
- namespace; that is the symbol std::cout will appear to have the name
- cout.
-
- Currently the following headers are not yet implemented:
- <cwchar> <wchar.h>
- <cwctype> <wctype.h>
-
- To summarize:
-
- ===================================
- #include <iostream>
-
- int main()
- {
- std::cout << "Hi\n";
- return 0;
- }
-
- // Runs fine.
- ===================================
- #include <iostream>
- using namespace std;
-
- int main()
- {
- cout << "Hi\n";
- return 0;
- }
-
- // Runs fine.
- ===================================
- #include <iostream>
-
- int main()
- {
- cout << "Hi\n";
- return 0;
- }
-
- // Error: Undefined identifier cout
- ===================================
- #include <iostream.h>
-
- int main()
- {
- cout << "Hi\n";
- return 0;
- }
-
- // Runs fine.
- ===================================
-
- Note: The C++ and Runtime libs must be recompiled whenever you turn namespaces
- on or off.
-
- * Using the functions in fenv.h on X86:
-
- In this version of fenv.h, the functionality provided is intended to
- match that of the Macintosh platforms. The header follows the
- current draft standard; however, there are a couple of minor
- differences on the X86 platforms.
-
- The committee changed the names of feget/setexcept to
- feget/setexceptflag. On X86, the latest are the functions and the
- former are macros defined in fenv.h.
-
- The functions feset/getprec and feset/getround are more straight-
- forward and perform better than feset/getenv as they manipulate
- particular bits of just the control word instead of the whole fp
- environment. Please use these functions instead.
-
- Currently it is difficult to distinguish between the feget/
- setexceptflags functions from feupdateenv/feraiseexcept functions.
- The intention of the set/getexceptflags functions is to provide
- additional information about the floating point exception environment.
- For instance, the type fexcept_t should be a struct containing not
- only the fpu information, but also an array of structs that provide
- more information about a particular exception. For example, this
- struct would tell which function and its arguments caused a specific
- exception. This practice is sometimes used in the Microsoft
- environment for writing exception handlers. However, this has not
- been implemented in this release of fenv.h. Instead, fexcept_t is
- the control word and status word as it is on the Mac. If users
- request this added functionaity, we will implement it in a future
- release. Otherwise, we will maintain compatibility of fexcept_t
- across platforms.
-
-
- ========================================================================
- Contacting Metrowerks
- ========================================================================
-
- For bug reports, technical questions, and suggestions, please use the
- forms in the Release Notes folder on the CD, and send them to
-
- support@metrowerks.com
-
- See the CodeWarrior on the Nets document in the Release Notes folder for
- more contact information, including a list of Internet newsgroups,
- on-line services, and patch and update sites.
-
- ========================================================================
-
-